Computer programs typically include code with instructions. For debugging purposes, special hardware, for example, in the form of an On-Chip Emulation (OCE) Unit, signals a breakpoint event. One type of breakpoint event is a breakpoint on a data event, known as a watchpoint. Watchpoints are temporary markers that are placed on the program variables, which cause the debugger to initiate a stop at the point the variable was accessed or contained a certain value.
However, since watchpoints are detected upon execution of the instruction, and typically at late stages of the instruction execution, the instruction has already caused modification of various registers and status bits. Moreover, the instruction could not be stopped during execution and continued to completion. Accordingly, the program stopped on the next instruction, and even a few instructions later, as the processor was only able to break or stop, after the instruction or instructions continued to completion.
The situation arising from this breakpoint event, where the processor breaks after the execution of the instruction, or as late as after the execution of multiple instructions, is commonly referred to as “break after make.” The instruction or instructions that continued to execute after detection of the breakpoint event, resulted in unwanted and unnecessary modification of internal registers, memory, status bits, etc.